
package com.jl.cloud.commom.base;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 统一集成BaseService 实现统一增删改查功能
 *
 * @param <T>
 * @author liang.jun
 */
@Service
public abstract class BaseService<T> {
    /**
     * 泛型注入
     */
    @Autowired
    protected BaseMapper<T> dao;

    /**
     * 根据主键查找
     *
     * @param id
     * @return
     */
    public T selectById(Integer id) {
        return dao.selectById(id);
    }


    /**
     * 根据自定义条件查找
     *
     * @param param
     * @return
     */
    public List<T> selectByParam(Map<String, Object> param) {
        return dao.selectByMap(param);
    }

    /**
     * 保存插入
     *
     * @param entity
     * @return
     */
    public int save(T entity) {
        return dao.insert(entity);
    }


    /**
     * 根据主键字段删除记录
     *
     * @param entity
     * @return
     */
    public int delete(T entity) {
        return dao.deleteById(entity);
    }

    /**
     * 根据等值条件删除记录
     *
     * @param param
     * @return
     */
    public int deleteByEntity(Map<String, Object> param) {
        return dao.deleteByMap(param);
    }


    /**
     * 查询所有记录，注意结合分页插件使用
     *
     * @return
     */
    public List<T> selectAll() {
        return dao.selectByMap(new HashMap<>());
    }


    /**
     * 查询所有记录，注意结合分页插件使用
     *
     * @return
     */
    public int updateById(T t) {
        return dao.updateById(t);
    }

}
